import java.util.*;
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 62536
 * Date: 2024-03-02
 * Time: 11:14
 */
public class Test {

    //前K个高频单词
    //给定一个单词列表 words 和一个整数 k ，返回前 k 个出现次数最多的单词。
    //返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率， 按字典顺序 排序。
    public static List<String> topKFrequent(String[] words, int k) {
        Map<String,Integer> map = new HashMap<>();
        for(String str: words) {
            if(map.containsKey(str)) {
                int val = map.get(str);
                map.put(str,val+1);
            } else {
               map.put(str,1);
            }
        }

        PriorityQueue<Map.Entry<String,Integer>> priorityQueue = new PriorityQueue<Map.Entry<String,Integer>>(
                new Comparator<Map.Entry<String, Integer>>() {
                    @Override
                    public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
                        if(o1.getValue().compareTo(o2.getValue()) == 0) {
                            //存储的时候，应该找key变为大根堆存储，因为后面要颠倒链表。
                            return o2.getKey().compareTo(o1.getKey());
                        }
                        return o1.getValue() - o2.getValue();
                    }
                }
        );

        //遍历map，将k个元素存放在小根堆的时候
        for (Map.Entry<String,Integer> entry : map.entrySet()) {
            if(priorityQueue.size() < k) {
                priorityQueue.offer(entry);
            } else {
                Map.Entry<String,Integer> top = priorityQueue.peek();
                if(entry.getValue() > top.getValue()) {
                    priorityQueue.poll();
                    priorityQueue.offer(entry);
                } else if(entry.getValue().equals(top.getValue())) {
                    if(entry.getKey().compareTo(top.getKey()) < 0) {
                        priorityQueue.poll();
                        priorityQueue.offer(entry);
                    }
                }
            }
        }
        List<String> ret = new ArrayList<>();
        for(int i = 0; i < k;i++) {
            Map.Entry<String,Integer> top = priorityQueue.poll();
            ret.add(top.getKey());//默认是尾插
        }
        Collections.reverse(ret);
        return ret;
    }


    //坏键盘打字，按照发现顺序，在一行中输出坏掉的键。其中英文字母只输出大写，每个坏键只输出一次。题目保证至少有1个坏键。
    //str1（预期输出）有但str2（实际输出）中没有的字符
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        while (in.hasNextLine()) { // 注意 while 处理多个 case
            String str1 = in.nextLine();
            String str2 = in.nextLine();
            func(str1,str2);
        }

    }

    public static void func(String str1, String str2) {
        Set<Character> set1 = new HashSet<>();
        Set<Character> set2 = new HashSet<>();

        str1 = str1.toUpperCase();
        str2 = str2.toUpperCase();
        for(int i = 0; i < str2.length(); i++) {
            set1.add(str2.charAt(i));
        }
        for(int i = 0; i < str1.length(); i++) {
            if(!set1.contains(str1.charAt(i))
                    && !set2.contains(str1.charAt(i))){
                set2.add(str1.charAt(i));
                System.out.print(str1.charAt(i));

            }
        }
    }
}
